#pragma once


#include <maya/MPxCommand.h>
#include <maya/MObject.h>
#include <maya/MGlobal.h>
#include <maya/MIOStream.h>
#include <maya/MSelectionList.h>
#include <maya/MItSelectionList.h>
#include <maya/MDagPath.h>
#include <maya/MFnDagNode.h>
#include <maya/MString.h>
#include <maya/MItMeshVertex.h>
#include <vector>
#include "BoundingBox.h"
#include <string>
#include "Options.h"
#include "ProjectionShape.h"
#include "Plane.h"
#include "Cylinder.h"

using namespace std;
class ShapeProjection
{
public:
	ShapeProjection(void);
	~ShapeProjection(void);
	void map(MSelectionList sel, Options* opts);

private:
	MSelectionList currSel;	
	BoundingBox* boundingBox;
	ProjectionShape* projShape;

	vector<MItMeshVertex*> allVerts;

	void extractVerts();
	void setUVsForObject(MItMeshVertex* vertsForOneMesh, ProjectionShape* projShape, Options* opts);
	void setUpUVScale();

	double uAdjust;
	double vAdjust;
	double uScale;
	double vScale;

};

